<?php
/**
 * 地址管理model
 * author:ty
 * date:2017/08/30
 */
namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Mockery\Exception;

class Address extends Model
{
    protected $table = 'address';

    /**
     * 用户收件地址列表
     * @param 查询条件
     */
    public static function lists($user_id)
    {
        $res = DB::table('address')->where('addr_user_id',$user_id)->where('addr_isdel',1)->orderBy('addr_id','desc')->get();
        return $res;
    }

    /**
     * 新增收货地址
     * @param 新增收货地址数据 数组[]
     */
    public static function add($param)
    {
        DB::beginTransaction();
        $codereview = DB::table('address')->where('addr_status',1)->get();
        try{
            if(count($codereview)>0){
                if($param['addr_status']==1){
                    $edit = DB::table('address')->where('addr_status',1)->update(['addr_status'=>0]);
                    if(!$edit){
                        DB::rollback();
                        return '原默认地址修改失败!';
                    }
                    $res = DB::table('address')->insertGetId($param);
                    if(!$res){
                        DB::rollback();
                        return '添加地址失败!';
                    }
                }
            }else{
                $res = DB::table('address')->insertGetId($param);
                if(!$res){
                    DB::rollback();
                    return '添加地址失败!';
                }
            }
            DB::commit();
            return 'ok';
        }catch(Exception $e){
            DB::rollback();
            return '新建地址失败!';
        }

    }

    /**
     * 设置默认收货地址
     * @id 需要修改的地址主键
     */
    public static function defaultad($id)
    {
        DB::beginTransaction();
        try{
            $addr = DB::table('address')->where('addr_status',1)->get();
            if(count($addr)>0){
                $edit = DB::table('address')->where('addr_status',1)->update(['addr_status'=>0]);
                if(!$edit){
                    DB::rollback();
                    return '原默认地址更新失败!';
                }else{
                    $edit = DB::table('address')->where('addr_id',$id)->update(['addr_status'=>1]);
                    if(!$edit){
                        DB::rollback();
                        return '设置默认更新失败!';
                    }
                }
            }else{
                $edit = DB::table('address')->where('addr_id',$id)->update(['addr_status'=>1]);
                if(!$edit){
                    DB::rollback();
                    return '设置默认更新失败!';
                }
            }
            DB::commit();
            return 'ok';
        }catch(Exception $e){
            DB::rollback();
            return '设置失败!';
        }
    }
}
